package so.ifl.servcie;

import java.util.List;
import java.util.Map;

import org.springframework.transaction.annotation.Transactional;

import so.ifl.vo.CarUseRecordVo;
import so.ifl.vo.FuelBillsVo;
import so.ifl.vo.InterimFeeVo;
import so.ifl.vo.RepairFeeVo;
import so.ifl.vo.TrainerCarReportVo;
import so.ifl.vo.TrainerCarVo;

/**
 *create by aaron.lu
 *create at 2012-3-19 下午11:56:29
 *<mailto: atyuan.lu@gmail.com>
 **/
@Transactional
public interface TrainerCarService {
	
	/**
	 * 查询教练车信息
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:01:28
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param limit
	 * @param offset
	 * @return
	 *
	 */
	public List<TrainerCarVo> queryTrainerCarWithParamAndPagination(Map<String, Object> params, int limit, int offset);
	
	/**
	 * 统计教练车信息
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:02:34
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public int countTrainerCarWithParam(Map<String, Object> params);
	
	/**
	 * 插入教练车功能
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:03:41
	 * <mailto: atyuan.lu@gmail.com>
	 * @param trainerCarVo
	 *
	 */
	public void insertTrainerCar(TrainerCarVo trainerCarVo);
	
	/**
	 * 更新教练车功能
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:05:09
	 * <mailto: atyuan.lu@gmail.com>
	 * @param trainerCarVo
	 *
	 */
	public void updateTrainerCar(TrainerCarVo trainerCarVo);
	
	/**
	 * 删除教练车信息
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:06:20
	 * <mailto: atyuan.lu@gmail.com>
	 * @param trainerCarId
	 *
	 */
	public void deleteTrainerCar(Integer trainerCarId);
	
	/**
	 * 查询使用记录
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:08:30
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param offset
	 * @param limit
	 * @return
	 *
	 */
	public List<CarUseRecordVo> queryUseRecord(Map<String, Object> params, int offset, int limit);
	
	/**
	 * 统计使用记录
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:09:45
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public int countUseRecord(Map<String, Object> params);
	
	/**
	 * 新增教练车使用记录
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:11:10
	 * <mailto: atyuan.lu@gmail.com>
	 * @param carUseRecordVo
	 *
	 */
	public void insertUseRecord(CarUseRecordVo carUseRecordVo);
	
	/**
	 * 删除使用记录
	 * create by aaron.lu
	 * create at 2012-3-20 上午12:13:54
	 * <mailto: atyuan.lu@gmail.com>
	 * @param carUseRecordId
	 *
	 */
	public void deleteUseRecord(Integer carUseRecordId);
	
	/**
	 * 查询油款
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:39:38
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param limit
	 * @param offset
	 * @return
	 *
	 */
	public List<FuelBillsVo> queryFuelBills(Map<String, Object> params, int limit, int offset);
	
	/**
	 * 统计邮费数量
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:40:20
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public Integer countFuelBills(Map<String, Object> params);
	
	/**
	 * 新增油款信息
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:41:08
	 * <mailto: atyuan.lu@gmail.com>
	 * @param fuelBillsVo
	 *
	 */
	public void insertFuelBills(FuelBillsVo fuelBillsVo);
	
	/**
	 * 删除油款信息
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:41:48
	 * <mailto: atyuan.lu@gmail.com>
	 * @param fuelBillsId
	 *
	 */
	public void deleteFuelBills(Integer fuelBillsId);
	
	/**
	 * 查询中期费用信息
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:43:25
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param limit
	 * @param offset
	 * @return
	 *
	 */
	public List<InterimFeeVo> queryInterimFee(Map<String, Object> params, int limit, int offset);
	
	/**
	 * 统计中期费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:44:26
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public Integer countInterimFee(Map<String, Object> params);
	
	/**
	 * 新增中期费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:45:46
	 * <mailto: atyuan.lu@gmail.com>
	 * @param interimFeeVo
	 *
	 */
	public void insertInterimFee(InterimFeeVo interimFeeVo);
	
	/**
	 * 删除中期费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:46:20
	 * <mailto: atyuan.lu@gmail.com>
	 * @param interimFeeId
	 *
	 */
	public void deleteInterimFee(Integer interimFeeId);
	
	/**
	 * 查询维修费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:48:18
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param limit
	 * @param offset
	 * @return
	 *
	 */
	public List<RepairFeeVo> queryRepairFee(Map<String, Object> params, int limit, int offset);
	
	/**
	 * 统计维修费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:49:04
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public Integer countRepairFee(Map<String, Object> params);
	
	/**
	 * 新增维修费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:49:19
	 * <mailto: atyuan.lu@gmail.com>
	 * @param repairFeeVo
	 *
	 */
	public void insertRepairFee(RepairFeeVo repairFeeVo);
	
	/**
	 * 删除维修费用
	 * create by aaron.lu
	 * create at 2013-3-11 下午8:50:04
	 * <mailto: atyuan.lu@gmail.com>
	 * @param repairFeeId
	 *
	 */
	public void deleteRepairFee(Integer repairFeeId);
	
	/**
	 * 查询教练车费用报表
	 * create by aaron.lu
	 * create at 2013-3-13 下午11:40:35
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public List<TrainerCarReportVo> listTrainerCar(Map<String, Object> params);
	
	/**
	 * 统计费用报表
	 * create by aaron.lu
	 * create at 2013-4-12 上午11:39:34
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public List<TrainerCarReportVo> sumTrainCarFee(Map<String, Object> params);

}
